package Negocio;

import entidades.Administrador;
import entidades.Administrativo;
import entidades.Cita;
import entidades.Enfermedad;
import entidades.HistoriaClinica;
import entidades.ListaDeEspera;
import entidades.Medico;
import entidades.Mensaje;
import entidades.Paciente;
import entidades.Tratamiento;
import entidades.Usuario;
import java.util.List;
import javax.ejb.Local;

@Local
public interface InterfazNegocio {

    public static enum Error {

        NO_ERROR,
        CONTRASEÑA_ERRONEA,
        ERROR_ENVIAR_MENSAJE,
        ERROR_USUARIO_INEXISTENTE,
        ERROR_USUARIO_REPETIDO,
        ERROR_LISTA_REPETIDA,
        NO_EXISTE_LISTA_ESPERA,
        NO_PACIENTE_LISTA_ESPERA,
        NO_EXISTE_HISTORIA_CLINICA,
        ERROR_CITA_REPETIDA,
        ERROR_ENFERMEDAD_REPETIDA,
    };

    public Error registrarUsuario(Usuario u);

    public Error compruebaLogin(Usuario u);

    public Error modificar_Datos_Personales(Usuario u, String telefono, String email, String contraseña);

    public Error crear_Lista_Espera(ListaDeEspera l);

    public Error insertar_Lista_Espera(Paciente p, ListaDeEspera l);

    public Error eliminarUsuario(Usuario u);

    public Error insertar_Lista_Paciente(Paciente p, Medico m);

    public Error eliminar_Paciente_Lista_Espera(Paciente p, ListaDeEspera l);

    public Error eliminar_Paciente_Lista_Paciente(Paciente p, Medico m);

    public Error modificar_Historia_Clinica(Paciente p, String descripcion, Enfermedad e, Tratamiento t, String dni);

    public Error mandar_mensaje(Mensaje m, String dni);

    public Error eliminar_recibido(Long id, Usuario u);

    public Error bloquear_Historia_Clinica(Paciente p, boolean b);

    public List<HistoriaClinica> getHistoriaClinica();

    public Error eliminar_enviado(Long id, Usuario u);

    public Error eliminar_queja(Long id, Usuario u);

    public List<Mensaje> getQuejas(Usuario u);

    public List<Mensaje> getRecibidos(Usuario u);

    public List<Mensaje> getEnviados(Usuario u);

    public List<Usuario> getPossibleRecipients(Class cl);

    public Error añadir_Enfermedad(Enfermedad e);

    public Error eliminar_Enfermedad(Enfermedad e);

    public Error eliminar_Cita(Cita c);

    public Error Añadir_Cita(Cita c, Medico m, Paciente p);

    public List<Cita> getCitasM(Medico m);

    public List<Cita> getCitasP(Paciente p);

    public List<Cita> getCitas();

    public List<Enfermedad> getEnfermedad();

    public List<ListaDeEspera> getListaEspera();

    public List<Medico> getMedicos();

    public List<Paciente> getPacientes();

    public List<Administrativo> getAdministrativos();

    public List<Administrador> getAdministradores();

    public List<Administrador> getAdministrador();

    public List<Usuario> getTodosUsuariosDeTipo(Class type);
}
